package com.ruoyi.delivery.utils;

import com.ruoyi.common.utils.uuid.UUID;

/**
 * ID生成器工具类
 *
 * @author ruoyi
 */
public class IdUtils
{
    /**
     * 获取随机UUID
     *
     * @return 随机UUID
     */
    public static String randomUUID()
    {
        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID()
    {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 随机UUID
     */
    public static String fastUUID()
    {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID()
    {
        return UUID.fastUUID().toString(true);
    }

    /**
     * My ID
     */
    public static String myId() {
        // 获取当前时间的毫秒数，并转换为16进制字符串，保留6个字符
        long timestamp = System.currentTimeMillis();
        String timestampHex = Long.toHexString(timestamp).substring(0, 6);

        // 生成UUID并截取前24个字符
        UUID uuid = UUID.randomUUID();
        String uuidPart = uuid.toString().replace("-", "").substring(0, 24);

        // 合并时间戳和UUID部分
        return timestampHex + uuidPart;
    }
}